// src/main.js

import { createApp } from 'vue';
import { createPinia } from 'pinia'; // 1. 导入 createPinia

import App from './App.vue';
import router from './router';
import 'font-awesome/css/font-awesome.css';
import { useUserStore } from './store/pinia_store_user.js';

// --- 初始化应用 ---
const app = createApp(App);
const pinia = createPinia(); // 2. 创建 Pinia 实例

app.use(pinia); // 3. 在 Vue 应用中使用 Pinia
app.use(router);

// 初始化用户状态
const initUserState = () => {
    const userStore = useUserStore();
    const token = localStorage.getItem('jwt-token');
    
    // 如果本地存储中有token，尝试加载用户信息
    if (token) {
        // 异步加载用户信息，但不等待它完成
        // 即使获取用户信息失败，只要有token，我们仍然认为用户已登录
        userStore.fetchUserInfo().catch(error => {
            console.error('自动加载用户信息失败:', error);
        });
    }
};

// 在应用启动时初始化用户状态
initUserState();

// --- 挂载应用 ---
app.mount('#app');

// 我们删除了所有旧的 app.provide 和 app.config.globalProperties。
// 开发模式下，任何组件需要 API 或 Store，都应该在组件内部通过 import 来导入，
// 例如：import { userApi } from '@/api'; 和 import { useUserStore } from '@/store';
// 这样做能让代码的依赖关系更清晰，更易于维护。